// src/api/archive.js
import { http } from '@/util/request'

/**
 * 档案登记
 * @param {Object} data - 档案登记数据
 * @param {string} data.employeeCode - 员工编码（必填）
 * @param {string} data.name - 姓名（必填）
 * @param {string} data.gender - 性别：男、女（必填）
 * @param {string} data.idCard - 身份证号（必填）
 * @param {string} data.birthDate - 出生日期（可选，格式：YYYY-MM-DD）
 * @param {string} data.ethnicity - 民族（可选）
 * @param {string} data.politicalStatus - 政治面貌（可选）
 * @param {string} data.maritalStatus - 婚姻状况（可选）
 * @param {string} data.phone - 手机号（可选）
 * @param {string} data.email - 邮箱（可选）
 * @param {string} data.emergencyContact - 紧急联系人（可选）
 * @param {string} data.emergencyPhone - 紧急联系人电话（可选）
 * @param {number} data.organizationId - 所属机构ID（必填）
 * @param {number} data.positionId - 职位ID（必填）
 * @param {string} data.joinDate - 入职日期（必填，格式：YYYY-MM-DD）
 * @param {string} data.probationPeriod - 试用期（可选）
 * @param {string} data.contractPeriod - 合同期限（可选）
 * @param {string} data.supervisorId - 直属上级ID（可选）
 * @param {string} data.workLocation - 工作地点（可选）
 * @param {string} data.bankName - 开户银行（可选）
 * @param {string} data.bankAccount - 银行账号（可选）
 * @returns {Promise} 返回档案登记结果，包含 id、code、status、registerTime
 */
export function registerArchive(data) {
  return http.post('/archive/register', data)
}

/**
 * 分页查询档案列表
 * @param {Object} params - 查询参数
 * @param {string} params.keyword - 搜索关键词（可选，员工编号/姓名）
 * @param {string} params.department - 所属机构（可选）
 * @param {string} params.position - 职位（可选）
 * @param {number} params.page - 页码（可选）
 * @param {number} params.pageSize - 每页数量（可选）
 * @returns {Promise} 返回分页的档案列表，包含 list、total、page、pageSize
 */
export function getArchiveList(params = {}) {
  return http.get('/archive/list', params)
}

/**
 * 获取档案详情
 * @param {number|string} id - 档案ID
 * @returns {Promise} 返回档案详情信息
 */
export function getArchiveDetail(id) {
  return http.get(`/archive/detail/${id}`)
}

/**
 * 获取档案变更列表
 * @returns {Promise} 返回档案变更列表，包含 list 和 total
 */
export function getArchiveChangeList() {
  return http.get('/archive/change/list')
}

/**
 * 提交档案变更申请
 * @param {Object} data - 档案变更数据
 * @param {number} data.archiveId - 档案ID（必填）
 * @param {string} data.changeType - 变更类型：部门调动、职位调整、信息修改等（必填）
 * @param {string} data.changeContent - 变更内容（必填）
 * @param {string} data.reason - 变更原因（可选）
 * @returns {Promise} 返回变更申请结果，包含 id、status、createTime
 */
export function submitArchiveChange(data) {
  return http.post('/archive/change', data)
}

/**
 * 获取待复核档案列表
 * @returns {Promise} 返回待复核档案列表，包含 list 和 total
 */
export function getArchiveReviewList() {
  return http.get('/archive/review/list')
}

/**
 * 删除档案（逻辑删除）
 * @param {number|string} id - 档案ID
 * @returns {Promise} 返回删除结果，包含 id、status
 */
export function deleteArchive(id) {
  // 根据文档，只需要路径参数 id，不需要请求体
  return http.delete(`/archive/${id}`)
}

/**
 * 档案复核
 * @param {number|string} id - 档案ID
 * @param {Object} data - 复核数据
 * @param {string} data.result - 复核结果（可选）
 * @param {string} data.comment - 复核意见（可选）
 * @returns {Promise} 返回复核结果，包含 id、status、reviewTime、reviewer、comment
 */
export function reviewArchive(id, data) {
  return http.post(`/archive/review/${id}`, data)
}

/**
 * 修改档案
 * @param {number|string} id - 档案ID
 * @param {Object} data - 档案更新数据
 * @param {string} data.name - 姓名（必填）
 * @param {string} data.gender - 性别：男、女（必填）
 * @param {string} data.idCard - 身份证号（必填）
 * @param {string} data.birthDate - 出生日期（可选，格式：YYYY-MM-DD）
 * @param {string} data.ethnicity - 民族（可选）
 * @param {string} data.politicalStatus - 政治面貌（可选）
 * @param {string} data.maritalStatus - 婚姻状况（可选）
 * @param {string} data.phone - 手机号（可选）
 * @param {string} data.email - 邮箱（可选）
 * @param {string} data.emergencyContact - 紧急联系人（可选）
 * @param {string} data.emergencyPhone - 紧急联系人电话（可选）
 * @param {number} data.organizationId - 所属机构ID（必填）
 * @param {number} data.positionId - 职位ID（必填）
 * @param {string} data.joinDate - 入职日期（必填，格式：YYYY-MM-DD）
 * @param {string} data.probationPeriod - 试用期（可选）
 * @param {string} data.contractPeriod - 合同期限（可选）
 * @param {string} data.supervisorId - 直属上级ID（可选）
 * @param {string} data.workLocation - 工作地点（可选）
 * @param {string} data.bankName - 开户银行（可选）
 * @param {string} data.bankAccount - 银行账号（可选）
 * @param {string} data.changeType - 变更类型：部门调动、职位调整、信息修改等（必填）
 * @param {string} data.changeContent - 变更内容描述（必填）
 * @param {string} data.reason - 变更原因（必填）
 * @returns {Promise} 返回变更申请结果，包含 id、status、createTime
 */
export function updateArchive(id, data) {
  return http.put(`/archive/${id}`, data)
}

/**
 * 恢复档案（对已逻辑删除的档案执行恢复操作）
 * @param {number|string} id - 档案ID
 * @returns {Promise} 返回恢复结果，包含 id、status
 */
export function restoreArchive(id) {
  // 接口要求使用 application/x-www-form-urlencoded 格式
  // 由于是 POST 请求且只需要路径参数 id，发送空的 URLSearchParams 以符合格式要求
  const params = new URLSearchParams()
  return http.post(`/archive/restore/${id}`, params, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
  })
}
